/*
 * @Author: your name
 * @Date: 2021-10-15 21:38:55
 * @LastEditTime: 2021-10-15 22:39:38
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \luogu\动态规划\模板问题\P1510 精卫填海\main.cpp
 */
#include<iostream>
using namespace std;
#include<algorithm>

int a[10010],m[10010];
//f[i]:i体力获得的最大体积
int f[10010];

int main(){
    //体积 石头数 剩余体力(先忽略)
    int v,n,c;
    cin >> v >> n >> c;
    for(int i=1; i<=n; i++){
        cin >> a[i] >> m[i];
        for(int j=c; j>=m[i]; j--){
            f[j] = max(f[j-m[i]]+a[i],f[j]);
        }
        // //打印
        // for(int j=0; j<=c; j++){
        //     cout << "f[" << j << "] = " << f[j] << endl; 
        // }
        // cout << endl;
    }
    //求取填满海(达到v)的最小体力
    if(f[c] < v){
        cout << "Impossible" << endl;
    }else{
        //找最小体力
        for(int i=c; i>=0; i--){
            if(f[i] < v){
                //说明 f[i+1] >= v
                cout << c-i-1 << endl;
                return 0;
            }
        }
    }
    return 0;
}
